home *** CD-ROM | disk | FTP | other *** search
/ 500 MB Nyheder Direkte fra Internet 2 / 500 MB nyheder direkte fra internet CD 2.iso / start / data / text / faq-1039.txt < prev    next >
Text File  |  1995-05-05  |  61KB  |  1,569 lines

  1. Archive-name: object-faq/part5
  2. Last-Modified: 10/27/94
  3. Version: 1.0.7
  4.  
  5. o  Visual Program Designer -- The Visual Program Designer allows developers
  6.    to visually create and modify the behavior of an application without
  7.    having to write code. Programs are created by connecting visual program
  8.    blocks to field blocks drawn from the forms created in the Forms
  9.    Designer. A large collection of predefined program blocks is provided
  10.    with GeODE, and users can extend the catalog in any of a number of
  11.    simple ways. Code-based programming can be integrated routinely.
  12.  
  13. o  Developer Class Library - GeODE comes standard with more than 480
  14.    classes and thousands of methods, and is easily extended for handling
  15.    specialized applications. In a team environment, some programmers can
  16.    develop visual applications while others write new methods that are
  17.    encapsulated into visual program blocks for easy reuse.
  18.  
  19. o  Developer Tools -- GeODE includes tools for debugging, browsing and
  20.    inspecting applications. Included in this set of tools are several
  21.    debuggers, browsers, inspectors, an object clipboard, an image editor,
  22.    and a code profiler for performance analysis.
  23.  
  24.  
  25.  ==============================================================================
  26.  
  27. PLATFORMS
  28.  
  29. GemStone release 3.2 and GeODE 2.0 and all language interfaces are
  30. available for UNIX workstations and servers from SUN, HP, IBM, Sequent, and
  31. DEC. Client-only support is available in a number of languages for Windows
  32. 3.1, OS/2 and Macintosh. Servio is an active member in the Object
  33. Management Group and the ANSI Smalltalk standardization committee. Servio
  34. supports SUN ODMG, ANSI C++ and intends to comply fully with the emerging
  35. standards.
  36.  
  37.  ==============================================================================
  38.  
  39. REFERENCES
  40.  
  41.   [Maier, et al. 84] D. Maier, J. Stein, A. Otis, A. Purdy, ``Development
  42.   of an object-oriented DBMS'' Report CS/E-86-005, Oregon Graduate Center,
  43.   April 86 - ACM 0-89791-204-7/86/0900-0472
  44.  
  45.   R.G.G. Cattell: Object Data Management - Object-Oriented and Extended
  46.   Relational Database Systems; Addison-Wesley. ISBN 0-201-53092-9
  47.  
  48.   Robert Bretl, David Maier, Allen Otis, Jason Penney, Bruce Schuchardt,
  49.   Jacob Stein, E. Harold Williams, Monty Williams. "The GemStone Data
  50.   Management System." Chapter 12 of "Object-Oriented Concepts, Databases
  51.   and Applications", by Kim and Lochovsky.
  52.  
  53.  
  54.  ==============================================================================
  55.  
  56. CONTACTS
  57.  
  58.  === Headquarters - San Jose ====
  59.  
  60. Servio Corporation
  61. 2085 Hamilton Avenue
  62. Suite 200
  63. San Jose  CA  95125
  64.  
  65. Tel: 800-243-9369
  66. Tel: 408-879-6200
  67. Fax: 408-369-0422
  68.  
  69.  === Chicago ====
  70.  
  71. Servio Corporation
  72. 8410 Bryn Mawr
  73. Suite 400
  74. Chicago  IL  60631
  75.  
  76. Tel: 312-380-1310
  77. Fax: 312-380-1308
  78.  
  79.  ===  New York ====
  80.  
  81. Servio Corporation
  82. 1120 Avenue of the Americas
  83. 4th Floor
  84. New York  NY  10036
  85.  
  86. Tel: 212-626-6680
  87. Fax: 212-626-6684
  88.  
  89.  === Dallas ====
  90.  
  91. Servio Corporation
  92. 14875 Preston Road
  93. Suite 550
  94. Dallas  TX  75240
  95.  
  96. Tel: 214-980-7073
  97. Fax: 214-980-2949
  98.  
  99.  === Europe/UK ====
  100.  
  101. Servio UK
  102. Criterion House
  103. Beauchamp Court, Victors Way
  104. Barnet  EN5 5TZ  England
  105.  
  106. Tel: +44 81 447-0800
  107. Fax: +44 81 447-0577
  108.  
  109.  === Japan ====
  110.  
  111. Servio Corporation
  112. Daito-Eiwa Building, 7F
  113. 5-11 Nihonbashi-Hakozakicho
  114. Chuo-ku  Tokyo 103  Japan
  115.  
  116. Tel: +81 3 3660-1910
  117. Fax: +81 3 3663-3287
  118.  
  119.  =====================
  120.  === Distributors ====
  121.  =====================
  122.  
  123.  === Germany, Austria, Switzerland ====
  124.  
  125. ObjectOriented System Technologies
  126. Baroper Str. 337
  127. Dortmund  50  W-4600
  128. Germany
  129.  
  130. Tel: +49 231 975 990
  131. Fax: +49 231 975 99-20
  132.  
  133.  === Japan ====
  134.  
  135. Japan Information Processing Service Co., Ltd.
  136. 2-4-2 Toyo , Koto-ku
  137. Tokyo, 135, JAPAN
  138.  
  139. Tel: +81 3 5690 3268
  140. Fax: +81 3 5690 3390
  141.  
  142. --------------------
  143.  
  144. Nexus Technology K.K.
  145. Suite 901
  146. Botan 3-11-1
  147. Koto-ku  Tokyo 135  Japan
  148.  
  149. Tel: +81 3 3660-1910
  150. Fax: +81 3 3663-3287
  151.  
  152.  === Taiwan ====
  153.  
  154. Anco Technologies
  155. 11-1F, 76 Tun Hwa S. Road, Sec. 2
  156. Taipei
  157. Taiwan, R.O.C.
  158.  
  159.  === Italy ====
  160.  
  161. Etnoteam S.P.A.
  162. Via Adelaide Bono Cairoli 34
  163. Milano  20127  Italy
  164.  
  165. Tel: +39 2 261 621
  166. Fax: +39 2 261 10755
  167.  
  168.  === England ====
  169.  
  170. AI International Ltd.
  171. 1 Parkview Road
  172. Berkhamsted
  173. Herts  HP4 2EY  England
  174.  
  175. Tel: +44 442 876 722
  176. Fax: +44 442 877 997
  177.  
  178.  ==== Mexico ====
  179.  
  180. TEIX, Sistemas de Informacion
  181. Estrategica S.A. de C.V.
  182. Antonio M. Anza No. 43
  183. Col Roma  Mexico D.F.  06700
  184.  
  185. Tel: +52 5 564-7146
  186.  
  187.  
  188. > ITASCA
  189.                        ITASCA ODBMS V2.2
  190.  
  191.                       Itasca Systems, Inc.
  192.                        7850 Metro Parkway
  193.                       Minneapolis, MN 55425
  194.                         sales@itasca.com
  195.                          (612) 851-3155
  196.  
  197.                           Sandy Miezwa
  198.                          (612) 851-3169
  199.  
  200. Introduction
  201.  
  202. Itasca Systems develops, markets, and supports ITASCA, a distributed 
  203. active object database management system and related tools. The initial 
  204. research work for ITASCA occurred in the Object-Oriented and Distributed 
  205. Systems Lab at the Microelectronics and Computer Technology 
  206. Corporation (MCC) in Austin, Texas. The research was known as the 
  207. ORION prototypes. 
  208.  
  209. The ITASCA Distributed ODBMS is a language neutral, full-featured, active 
  210. object database that supports data access from various object
  211. languages. ITASCA allows clients to transparently access data that is
  212. distributed among multiple servers.  ITASCA supports full dynamic schema
  213. modification that can be performed during any phase of the software
  214. lifecycle.  Applications written in dissimilar and incompatible languages,
  215. such as C++ and CLOS, share objects through ITASCA. ITASCA stores methods
  216. inside the database, promoting reusability and maintainability.  The only
  217. commercial ODBMS based upon the MCC Orion technology, ITASCA is considered
  218. by many to be the most feature-rich ODBMS on the market today.
  219.  
  220. This overview describes release 2.2 of the ITASCA Distributed Object 
  221. Database Management System. It describes how ITASCA functions, 
  222. outlines its implementation features, and explains some of the system 
  223. benefits. 
  224.  
  225.  
  226. History of ITASCA
  227.  
  228. ITASCA is based on a series of object database research prototypes. Work 
  229. on these prototypes began in 1985 at the Microelectronics and Computer 
  230. Technology Corporation (MCC) Object-Oriented and Distributed Systems 
  231. Laboratory. MCC released the first prototype, ORION-1, in May, 1987, as 
  232. a single-user system. MCC extended ORION-1 to the ORION-1SX 
  233. prototype system and released it to the shareholder companies in April, 
  234. 1988. ORION-1SX was a multi-user system with a multi-client, single 
  235. server architecture. The third prototype, ORION-2, introduced a distributed, 
  236. object-oriented architecture for a multi-user environment. MCC released 
  237. the third prototype to shareholder companies in July, 1989. ORION-2 has a 
  238. multi-client, multi-server architecture. Having met its objectives, MCC 
  239. stopped all work on ORION at that time. Over five million dollars was spent
  240. for the three generations of prototypes.
  241.  
  242. The ITASCA product is an extension and commercialization of the ORION-2
  243. prototype from MCC. Itasca Systems has added major enhancements and
  244. features, improved the performance, and strengthened the code. It now runs
  245. on UNIX systems from multiple vendors. ITASCA is an industrial-strength,
  246. documented product, fully supported by Itasca Systems, Inc. Itasca Systems
  247. continues to develop tools and other products to work with ITASCA.
  248.  
  249.  
  250. Overview
  251.  
  252. ITASCA employs a distributed architecture with private and shared objects 
  253. spread across UNIX-based computers on a local-area network. The 
  254. ITASCA model follows the object-oriented view that uniformly models any 
  255. real-world entity as an object. Each object has a unique identifier along with 
  256. a state and behavior. Attributes represent the state of an object. Methods 
  257. (code) define the behavior of an object. A class object collects objects that 
  258. share the same set of attributes and methods. Subclasses derive from 
  259. existing classes. The resulting schema, or database definition, is a class 
  260. hierarchy. Each subclass inherits all the attributes and methods of its 
  261. superclasses. ITASCA supports multiple inheritance. A subclass may derive 
  262. from more than one superclass. 
  263.  
  264. One of the breakthroughs of object-oriented technology is the reusability of 
  265. code. ITASCA allows for the active management of both reusable code and 
  266. data in an integrated system. Developers may write applications in C++,
  267. CLOS, C or Common Lisp. This means ITASCA is language neutral. Objects 
  268. stored using one programming language can be accessed by other 
  269. programming languages. It also means an application program need not be
  270. written in an object-oriented language. 
  271.  
  272. The ITASCA database management system has features belonging to most any 
  273. database system. This includes persistent storage for data and schema, 
  274. concurrency control and locking, transaction management, multiple 
  275. security levels, and logging and recovery for both CPU and disk media 
  276. failure. Additional features of ITASCA include dynamic schema 
  277. modification, long-duration transactions, shared and private databases, 
  278. distributed version control, distributed transaction management, distributed 
  279. query management, distributed change notification, object migration, and 
  280. an extensible architecture.
  281.  
  282. Shared and private databases exist in a distributed environment in ITASCA. 
  283. The shared database is distributed across workstations (sites) in a network. 
  284. An ITASCA server controls the partition of the shared database at each site. 
  285. ITASCA clients provide transparent access to the various partitions of the 
  286. shared database. The architecture allows any number of private databases at 
  287. each distributed database site. Data can move between private and shared 
  288. databases. Private databases allow private data that is not shared with other 
  289. users of the database.
  290.  
  291. ITASCA stores the schema redundantly at each site to improve 
  292. performance. The schema storage also includes code in the form of 
  293. methods. Management of schema updates is automatic for all sites. This 
  294. includes sites that were off-line during any changes. Automatic distribution 
  295. of schema changes, including method code changes, simplifies database 
  296. administration.
  297.  
  298. ITASCA stores each instance of data in one site. The system or a user may 
  299. move the data from one site to another to improve data locality. Access to 
  300. moved data remains transparent. There is no need for a user or application 
  301. to know the specificlocation of data in the ITASCA distributed database. 
  302. ITASCA will automatically find the location of the data. This simplifies 
  303. distributed application development. The developer can rely on ITASCA 
  304. finding data in the distributed database.
  305.  
  306. No single site acts as a master site, thus ITASCA's architecture has no 
  307. single point of failure. ITASCA has neither a central data server nor a 
  308. central name server. This is important for maintaining a database system 
  309. with high availability in a networked workstation environment.
  310.  
  311. ITASCA supports dynamic schema modification to create a flexible 
  312. environment for changing or customizing a database system. Authorized 
  313. users can add and remove attributes or change the subclass/superclass 
  314. relationship at any time. Authorized users can also add or remove partitions 
  315. of the shared database at any time. All this can be done interactively without 
  316. affecting other parts of the ITASCA database at the time changes occur to 
  317. the schema. There is no need to "bring the system down" or off-load/reload 
  318. data to restructure the database. Dynamic schema modification can 
  319. significantly reduce maintenance costs. It also is useful in environments 
  320. where change to data definitions are normal or relatively frequent.
  321.  
  322. ITASCA has a sophisticated security authorization technique tied to the 
  323. class hierarchy. It supports both positive and negative authorizations at any 
  324. level in the class hierarchy. For example, granting access to all objects but 
  325. one requires only two authorizations: a global grant followed by a specific 
  326. denial. Authorization extends to classes, instances of classes, attributes, 
  327. and methods. Also, inheritance of authorization reduces the work of database 
  328. administration. 
  329.  
  330. Long-duration transactions allow users to check objects out of the shared, 
  331. distributed database into their private databases. Users can then change the 
  332. objects in the private databases without affecting the shared database or 
  333. other users. These changes can be committed to the private database. Then, 
  334. at any later time, the user can check the updated object or objects back into 
  335. the shared database.
  336.  
  337. ITASCA supports version control of objects. A new version of an object 
  338. promotes the original or parent object to restrict further changes to the 
  339. parent. ITASCA also supports alternate versions such that multiple versions 
  340. can have the same parent. Promoting an object version to a released status 
  341. restricts any deletion of the object. ITASCA uses generic versions to 
  342. dynamically reference the most recent or default version of an object 
  343. without any intervention by a user or application.
  344.  
  345. Change notification in ITASCA is either flag-based or message-based. 
  346. Flag-based notification will identify an updated object upon querying the 
  347. object for such information. It is a passive notification scheme. Message-
  348. based notification, on the other hand, is an active notification scheme. It 
  349. will execute a method (or code) upon an update or other change to an object. 
  350. Such methods can send mail messages or invoke other methods or 
  351. programs. 
  352.  
  353. Memory management in ITASCA uses both page and object buffers. 
  354. ITASCA has a traditional database page buffer scheme that contains pages 
  355. with multiple objects. Desired objects move from the page buffer to an 
  356. object buffer. The object buffer then provides ITASCA with enhanced in-
  357. memory performance because it contains only frequently-referenced 
  358. objects. 
  359.  
  360.  
  361. > Matisse
  362.  
  363. OODBMS FEATURES LIST:
  364.  
  365. An Industrial Strength Open Semantic Object Database
  366.  
  367. Performance
  368. -       Symmetric, Fine Grain, Multi-Threaded Architecture
  369. -       Parallel and Asynchronous Disk I/O
  370. -       Automatic Disk Optimization through Dynamic Clustering
  371. -       High Speed OLTP Environment
  372. Reliability
  373. -       24 Hour - Mission Critical Operation
  374. -       Media Fault Tolerant (Object Replication)
  375. -       Transparent On-line Recovery
  376. Database Administration
  377. -       Full On-line Administration (No Down Time)
  378. -       On-line Incremental or Full Back-Up
  379. -       Dynamically Increase Database Size -   On-line
  380. -       Full On-line Monitoring
  381. Data Management and Consistency
  382. -       Dynamic Schema Evolution
  383. -       Consistent Database Reads without Locking
  384. -       Historical Versioning, both Schema and Data Objects
  385. -       Built-in Enforced Referential Integrity
  386. -       Object Level Implicit or Explicit Locking
  387. Scalability
  388. -       Hundreds of Concurrent On-line Users
  389. -       Hundreds of Gigabytes Per Database
  390. -       From Few Bytes to Four Gigabytes for Each Object
  391. -       Up to Four Giga-objects Per Database
  392. Object Model
  393. -       Full Object Oriented Model
  394. -       User Extensible Object Meta-Schema
  395. -       Support for Complex, Highly Dynamic, Variable Sized Objects
  396. -       Multiple Inheritance
  397. Intelligent Objects
  398. -       Triggers at Object, Attribute, or at Relationship Level
  399. -       Consistency Rules at Object, Attribute, or at Relationship Level
  400. -       Customizable Intelligent Object Indexing
  401. -       Automatic Inverse Relationships
  402. Open Systems
  403. -       Open C, C++ API
  404. -       Supports Any Commercial Development Tool and Language
  405. -       No Proprietary Tool Required
  406. -       Heterogeneous Cross Platform Client/Server Architecture
  407.  
  408. For Information on MATISSE, Contact one of the following offices:
  409.  
  410. USA:
  411. ODB, an Intellitic International Company
  412. 238 Broadway
  413. Cambridge, MA  02139
  414. Phone:(617) 354-4220
  415. Fax: (617) 547-5420
  416. email:  info@odb.com
  417.  
  418. EUROPE:
  419. INTELLITIC INTERNATIONAL
  420. 12-14 rue du Fort de Saint-Cyr
  421. Montigny-le-Bretonneux
  422. 78182 Saint Quentin en Yvelines Cedex France
  423. Phone:   33(1) 30.14.54.30
  424. Fax:    33 (1) 30.14.54.40
  425.  
  426. JAPAN:
  427. SGN CO. LTD.
  428. Urban Toranomon Building
  429. 16-4 Toranomon
  430. Minato-Ku Tokyo 105 Japan
  431. Phone:   81 (3) 3593.34.31
  432. Fax:   81 (3) 3593.34.32
  433.  
  434.  
  435. > NeoAccess
  436.  
  437. A cross-platform object-oriented database engine based on C++. It allows
  438. developers to embed the power of a fully-functional object-oriented database
  439. system into their applications. All of the data contained in the database,
  440. including indices, can be in a single file, so users can treat a database
  441. file as they would a standard document file. The programming model is
  442. designed to keep visible complexity to a minimum while providing a
  443. feature-rich foundation on which to build and enhance applications.
  444.  
  445. NeoAccess has taken a different approach toward the issues surrounding object
  446. persistence than have other solutions that have been offered. We believe that
  447. objects should be viewed as having a set of properties with a pliable state.
  448. With NeoAccess persistent objects are provided with persistence and sharing
  449. properties. These properties allow objects to maintain an association with a
  450. file. This association, which can be built and broken freely, allowing
  451. objects to migrate freely between disk and memory. The API to these
  452. properties address issues such as adding or deleting the object from a file,
  453. sorting and indexing, locating and later freeing the object in memory, object
  454. sharing, and maintaining relationships between objects.
  455.  
  456. NeoAcces
  457. s with has been fully integrated into standard application frameworks such as
  458. Borland's ObjectWindows and MacApp 3.0 and the THINK Class Library on the
  459. Macintosh. A single source tree can be used to build the engine in all
  460. development environments. Database files are binary-compatible across
  461. platforms so users on different types of machines can share data without
  462. conversion.
  463.  
  464. Contact:
  465. Bob Krause
  466. NeoLogic Systems
  467. 1373 Third Avenue
  468. San Francisco, CA 94122
  469. (415) 566-9207
  470.  
  471.  
  472. > O2 (INRIA/O2 Technology)
  473.  
  474. This is an entry on schema evolution.  General papers on O2 are included.
  475.  
  476. We have implemented in O2 schema updates in our first release but
  477. without NO IMPACT on the database (we have a design to implement
  478. deferred update, but it is a paper design). However, users manage to
  479. convert their instances by hand, using their O2 programs written
  480. themselves, and with the aid of the following tools:
  481.  
  482. 1- There is a set of predefined classes whose instances contain
  483.    objects representing a schema (i.e., a Meta-schema). These classes
  484.    may be used in a conversion program, they may even be extended by
  485.    the programmer.
  486.  
  487. 2- There is a save-restore program that allows to take an O2 database,
  488.    save it on a file or a tape in a logical way (i.e., independent of
  489.    the physical format of objects on disk), and restore it again on a
  490.    (perhaps new release) of the system, in an empty database.
  491.    Currently, when saving a database its schema is also saved. The
  492.    next extension to this save/restore program will be to save the
  493.    database without saving its schema, and then restore the database
  494.    on a new version of that schema. The restore program will be able
  495.    to perform automatically some conversions like "add attribute" or
  496.    "delete attribute".
  497.  
  498.  
  499. Schema updates with impact on the database will be implemented in future 
  500. releases.
  501.  
  502. [Fernando Velez <fernando@o2tech.fr>]
  503.  
  504.  
  505. For more information on O2, consult the following REFERENCES:
  506.  
  507.         Francois Bancilhon, Claude Delobel, Paris
  508.         Kanellakis.  "Building an Object-Oriented Database
  509.         System: The Story of O2".  Morgan Kaufmann Series
  510.         in Data Management Systems, San Mateo, Calif., 1992.
  511.         
  512.         F. Bancilhon, G. Barbette, V. Benzaken, C. Delobel,
  513.         S. Gamerman, C. Lecluse, P. Pfeffer, P. Richard,
  514.         and F. Velez.  "The Design and Implementation of
  515.         O2, and Object-Oriented Database System".
  516.         Advances in Object-Oriented Database Systems,
  517.         Springer Verlag. (Lecture Notes in Computer Science
  518.         series, Number 334.)
  519.  
  520.         C. Lecluse, P. Richard, and F. Velez. "O2, an
  521.         Object-Oriented Data Model".  Proceedings of
  522.         SIGMOD88.  Also appears in Zdonik and Maier,
  523.         "Readings in Object-Oriented Database Systems",
  524.         Morgan Kaufmann, 1990.
  525.  
  526.  ==== Corporate headquarters:
  527. O2 Technology
  528. 7 Rue du Parc de clagny
  529. 78035 Versailles Cedex
  530. France
  531. tel : 33 1 30 84 77 77
  532. fax : 33 1 30 84 77 90
  533.  
  534. [They have many other contacts worldwide]
  535.  
  536.  
  537. > Objectivity/DB (Objectivity)
  538.  
  539. Introduction:
  540.  
  541. Objectivity/DB has a fully distributed client/server architecture that
  542. transparently manages objects distributed across heterogeneous environments and
  543. multiple databases.  It provides an application interface that uses transparent
  544. indirection to ensure integrity and provides a single logical view of all
  545. information, with all operations working transparently on any database on the
  546. network, with scalable performance as users and objects increase.  A
  547. higher-level Object Definition Language (ODL) is available as well as a C
  548. functional interface, integrated C++ interface, and SQL++.
  549.  
  550.  
  551. Objectivity/DB
  552.  
  553. Objectivity/DB [Reference:  Technical Overview, Objectivity, 1993], a product
  554. of Objectivity, Inc. of Menlo Park, CA, provides an integrated C++ programming
  555. interface with an emphasis on the DBMS engine for robustness and scalability
  556. from workgroups to enterprise-wide production applications.  In production use
  557. today with more than 50,000 end users licensed, it supports a fully
  558. distributed, rather than central-server, architecture, with all operations
  559. working transparently over a mixture of multiple databases, schemas, users, and
  560. computers, and over heterogeneous hardware, operating systems, and networks. 
  561. The language interface includes a C++ class library interface, soon to be ODMG;
  562. a C function library; and SQL++, supporting query predicates with either SQL or
  563. C++ syntax, interactively or programmatically.  Over forty administrative and
  564. GUI tools provide both an interactive and programmatic interface, and a
  565. messaging backplane allows third party tools integration at four different
  566. levels, with a list of partners at all levels.
  567.  
  568. One of the key architectural concepts of Objectivity/DB is an object reference
  569. mechanism that ensures data integrity.  Unlike traditional ODBMSs that use
  570. direct pointers, which become invalid after commit and hence lead to crashes
  571. and corrupt databases, Objectivity/DB uses an indirection to guarantee safe
  572. reference.  Transparent to the user, this indirection requires an extra test
  573. and pointer dereference, or a couple of cycles, which is not measurable in most
  574. applications.  However, it ensures integrity of all references, even across
  575. transaction boundaries, resulting in production quality robustness.  Also, it
  576. provides object level granularity for the object manager, allowing it to move,
  577. cluster, and swap objects as necessary, one of the keys required for
  578. scalability in objects and users.  Finally, it allows object-level granularity
  579. for current features, such as heterogeneity and versioning, and future
  580. extensions, such as object-level security.
  581.  
  582. A higher-level Object Definition Language (ODL) is provided that allows
  583. declaration of modeling concepts such as bi-directional associations, behavior
  584. of associations between objects as they version (move, copy drop), and
  585. propagation of methods across associations.  These then result in automatically
  586. generated methods and declarations for both C++ and C.  The standard C++ API
  587. allows application programmers to work with any standard compilers and
  588. debuggers, with no extra pre-processors, providing ODBMS capabilities via
  589. overloading C++ operators (new, ->, etc.), and declarations via provided
  590. classes (for references, etc.).
  591.  
  592. Workgroup through enterprise-wide and cross-enterprise computing is supported
  593. via a distributed client/server architecture that provides a single logical
  594. view over multiple databases on heterogeneous machines.  The user sees a
  595. logical view of objects connected to objects and need not worry that one object
  596. is in a database on a Sun workstation, while another may be in a database under
  597. Windows or VMS.  All operations work transparently across this environment,
  598. including atomic transactions with two-phase commit, propagating methods, and
  599. versioning.  Objects may be moved between databases and platforms without
  600. affecting working applications or requiring changes to the applications. 
  601. Multiple schemas may be created, without affecting other users or databases,
  602. and may be used simultaneously with shared schemas, allowing local groups to
  603. define their own models but still connect to other groups.  Databases may be
  604. detached from this shared environment (federated database) and used on portable
  605. devices, reconnected or moved to different (compatible) environment, or
  606. distributed as parts or image libraries.  Gateways to RDBMSs are provided via
  607. third-party integration with Persistence Software, and more generally to any
  608. foreign data store, as long as the user installs the appropriate access
  609. methods, extending the single-logical-view to include read/write access to
  610. arbitrary foreign data stores.  Together, these allow delegation of
  611. responsibilities to the appropriate users, integration with existing systems,
  612. and gradual migration toward full enterprise-wide sharing.
  613.  
  614. The on-demand object manager directly and automatically manages object access
  615. and buffering, rather than relying on system facilities such as virtual memory
  616. or user manual get/put calls.  Mechanisms used include multiple buffer pools
  617. locally and remotely, b-trees, hashing, scoped names, keys, and iterators, with
  618. distributed catalogues for schemas and databases.  A direct connection is
  619. established between the user and the objects used, so that users do not
  620. conflict unless and until they are competing for the same objects, thus
  621. avoiding the traditional central-server bottleneck.  Short transactions are
  622. based on traditional (transient) locks, owned by the process, and group
  623. together an arbitrary set of operations.  Long transactions are based on
  624. persistent locks, owned by the user, and provide the same arbitrary grouping. 
  625. Default concurrency is two-phase locking and serialization, but extensions
  626. available include MROW, or multiple-readers concurrent with one-writer, and
  627. allow users to lock with or without wait or with timed waits, to implement more
  628. sophisticated mechanisms.
  629.  
  630. Objects may be modeled using C++ structures augmented by classes provided such
  631. as strings, dictionaries, and relationship management, as well as some
  632. particular domain libraries.  A simple object is a C++ class (or C structure)
  633. with associated access methods.  A complex object may include multiple varrays,
  634. each being a dynamically varying sized array of arbitrary structure.  A
  635. composite object is any network of related objects that acts as a single
  636. object, both structurally and behaviorally, via propagation of behaviors to
  637. component objects.  Any number of composite objects may be contained in
  638. composite objects, and a single object may participate in any number of
  639. composites.  The relationship mechanism supports uni- and bi-directional
  640. relationships, one-to-one, one-to-many, and many-to-many.  Versioning is
  641. supported at object granularity, may be turned on or off at any time for each
  642. object, may be restricted to linear or allow branching with multiple writers. 
  643. References to versioned objects may be to a specific version or to the default
  644. version, which may be separately specified by a method and may allow multiple
  645. defaults.  Schema and object evolution are supported via versioning of the
  646. type-defining objects.  Each time a type definition is changed, its defining
  647. object is versioned, allowing arbitrary changes.  Objects may then be instances
  648. of the old or new type version.  Object evolution or upgrading to the new type
  649. version is supported  by the user writing conversion methods which are
  650. installed and invoked by the system.
  651.  
  652. ANSI SQL query is supported in the SQL++ product.  Predicate syntax may be
  653. either C++ or SQL.  The ODBC and SQL Access Group (SAG) protocols are
  654. supported.  Queries may be invoked programatically or interactively, with ad
  655. hoc support.  Access to object features is available via methods and traversal
  656. of relationships.
  657.  
  658. Over forty administrative and developer tools are provided, each with both an
  659. interactive and programmatic interface.  These include GUI object and type
  660. browsers, query browsers, report generator, tools to examine and force short
  661. and long locks, to move objects and databases, etc.  On-line incremental backup
  662. provides a consistent network-wide snapshot, including referential integrity
  663. across all databases, and runs incremental and full database backups with no
  664. need to acquiesce the databases and no interference with active applications. 
  665. All tools are built around a messaging backplane, which supports four levels of
  666. integration with user and third-party tools.  Integrated products include HP
  667. SoftBench (full operational level), CenterLine's ObjectCenter (tool level), 
  668. Persistence RDBMS gateway, PTech and ProtoSoft Design and Analysis (language
  669. level), and XVT and UIM/X (compatibility level).
  670.  
  671. Objectivity/DB is resold by Digital Equipment Corporation as DEC Object/DB,
  672. providing a multi-billion-dollar second source vendor.  Over 50,000 end users
  673. are licensed in production use, with applications including real-time
  674. telecommunications, aerospace, defense, case, CAD/CAM, CIM, manufacturing, oil
  675. & gas, process control, transportation, multi-media, case, document management,
  676. financial analysis, and corporate information management.  Platform support
  677. includes all Sun, all DEC (including VMS, alpha, OSF-1), HP/9000 series (both
  678. 68xxx and PA-RISC), IBM RS/6000, NCR 3300, SGI, Windows 3.1, and Windows NT.
  679.  
  680. On Schema Evolution (from original survey):
  681. In the just-released Version 2.0 (shipping Oct 92), schema evolution
  682. is supported via dynamic versioning of type-defining objects [ie.
  683. class versions -- SMC], and via a step-by-step approach that allows
  684. conversion of instance data via user-provided conversion methods.
  685. Also, a full dynamic type manager interface is available for doing
  686. fancier things.
  687.  
  688. Contact:
  689.  
  690. Drew Wade
  691. Objectivity, Inc.
  692. 800 El Camino Real
  693. Menlo Park, CA  94025 USA
  694. drew@objy.com
  695. 1(415)688-8000 voice
  696. 1(415)325-0939 fax
  697. admin ass't:  Vickie Clements (vickie@objy.com)
  698. information:  info@objy.com
  699.  
  700.  
  701. > ObjectStore Object Database System From Object Design, Inc.
  702.  
  703.  
  704. Product Description    
  705.  
  706. ObjectStore[TM] is a high performance ODBMS designed for ease of use in
  707. development of sophisticated applications using object-oriented
  708. development techniques.  It offers a tightly-integrated language
  709. interface to a complete set of traditional DBMS features including
  710. persistence, transaction management (concurrency control and
  711. recovery), distributed access, associative queries over large amounts
  712. of data, and database administration utilities.  ObjectStore's data
  713. management facilities combined with popular development tools create a
  714. high productivity development environment for implementing
  715. object-oriented applications.
  716.  
  717. Key Features:
  718.  
  719.    - Transparent interface designed for popular C and C++ programming
  720.      environments. 
  721.  
  722.    - Concurrent access to large amounts of persistent data. 
  723.  
  724.    - Distribution of objects over networks using a variety of popular
  725.      network protocols.
  726.  
  727.    - Access to persistent data at the same speed as transient data.
  728.  
  729.    - Extensible data modeling capabilities for applications requiring
  730.      complex data structures.
  731.  
  732.    - Easy migration path for existing C and C++ applications.
  733.  
  734.    - Class libraries for version and configuration management.
  735.  
  736.    - Class libraries for managing collections of objects.
  737.  
  738.    - A fully distributed (multi-server/multi-database) ad hoc query
  739.      capability.
  740.  
  741.    - An interactive Browser to inspect objects and object
  742.      descriptions.
  743.  
  744.    - Interoperable with ObjectStore servers running on other operating
  745.      systems and hardware environments.
  746.  
  747.    - Complete schema evolution for an application's metadata and
  748.      existing object instances.
  749.  
  750.    - Full online backup for continuous processing environments.
  751.  
  752.    - Meta object protocol with programmatic access to schema
  753.      information. 
  754.  
  755.    - Dynamic Type creation for extending existing class definitions
  756.      during program execution.
  757.  
  758.  
  759. System View
  760.  
  761. ObjectStore supports cooperative access through its flexible
  762. client/server software architecture, which allows users to make the
  763. take advantage of the computational power that exists on the desktop.
  764. ObjectStore's client/server implementation allows one server to
  765. support many client workstations, each workstation to simultaneously
  766. access multiple databases on many servers, and a server to be resident
  767. on the same machine as a client.  ObjectStore's distributed
  768. architecture supports several network environments for
  769. interoperability among popular workstations and PC's and includes
  770. support for TCP/IP, Novell IPX/SPX, other popular network protocols.
  771.  
  772.  
  773. Application Interface
  774.  
  775. Access to ObjectStore is provided through a library based application
  776. interface compatible with popular C and C++ compilers and programming
  777. environments.  The ObjectStore application interface provides support
  778. for C++ compilers -- such as those from workstation suppliers -- and
  779. development environments from independent software vendors such as
  780. Visual C++ from Microsoft, ObjectCenter from CenterLine Software, Inc.
  781. and Energize from Lucid, Inc.  The application interface provides
  782. powerful high-level function calls which enable the programmer to
  783. create multi-user application which share large amounts of data.
  784. These functions include:
  785.  
  786.    - Relationship Management
  787.    - Version Management
  788.    - Collection Management
  789.    - Storage Management
  790.    - Associative Queries
  791.    - Object Iteration
  792.    - Transaction Management 
  793.    - Index Management
  794.    - Clustering
  795.  
  796. Applications developed using ObjectStore library calls are
  797. source-level compatible with ObjectStore applications developed for
  798. other operating systems on other hardware platforms.
  799.  
  800. Platforms
  801.  
  802. ObjectStore is available on the following major platforms:
  803.     
  804. Unix Workstation Platforms
  805.  
  806.    - DEC MIPS Ultrix 
  807.    - HP 700 Series HP-UX
  808.    - HP 800 Series HP-UX 
  809.    - IBM RS/6000 AIX
  810.    - NCR 3000 
  811.    - Olivetti LSX-50xx SVR4
  812.    - Silicon Graphics IRIX 5.x
  813.    - SunSoft Intel Solaris 2
  814.    - SunSoft SPARC Solaris 1 SunOS 4
  815.    - SunSoft SPARC Solaris 2 SunOS 5
  816.    - Univel UnixWare
  817.  
  818. PC Platforms
  819.  
  820.    - Windows 3.1 (Win32s)
  821.    - Windows NT (Intel)
  822.    - OS/2 Release 2.0 and 2.1
  823.    - Novell Netware Release 3.1 and 4.0 (server only)
  824.  
  825. The Company
  826.  
  827. ObjectStore[TM], Object Design's object-oriented database management
  828. system, is currently used by more than 500 companies.  The company
  829. targets end-user customers in major corporations and governments
  830. through its direct sales force, and also focuses on independent
  831. software developers, systems integrators and international
  832. distributors to license its products.  In the systems software market,
  833. Object Design has already licensed object storage technology to
  834. SunSoft that will be embedded in the Solaris(r) (Project DOE)
  835. environment.  Through this relationship Hewlett Packard also has rights
  836. to the technology for use in HP/UX(r) (DOMF).
  837.  
  838. In April 1993, IBM Corporation became one of the company's leading
  839. investors as part of a far-reaching strategic relationship involving
  840. an equity investment, internal use and joint development agreements.
  841.  
  842. Object Design's Support Services group provides extensive support
  843. services tailored to meet each customer's specific needs.  A regularly
  844. scheduled series of training courses are offered, either at Object
  845. Design facilities across North America, select international locations
  846. or at customer sites, that reduce the learning curve for
  847. object-oriented development.  The training courses include
  848. "Introduction to Object-Oriented Programming and C++," "Designing
  849. Object-Oriented Database Applications" and "Building High Performance
  850. Applications with ObjectStore."  To further assist its customers,
  851. Object Design makes its team of experts available to provide a wide
  852. range of training, support and consulting services.
  853.  
  854. The company distributes its products through a direct sales and
  855. telesales force in the North America, wholly-owned subsidiaries in
  856. Australia (61-2-212-2766), Germany (49-611-39707-0), Japan
  857. (81-3-3251-2882), and the United Kingdom (44-793-486111) as well as
  858. through distributors in 15 countries.
  859.  
  860. The US headquarters are located in Burlington, Mass., the company
  861. maintains regional or district offices in Atlanta; Chicago; Los
  862. Angeles; New York; Portland; San Mateo, Calif.; and Washington, DC.
  863.  
  864. You may obtain information about ObjectStore or Object Design by any
  865. of the following methods:
  866.  
  867. Address:
  868.  
  869.     Object Design, Inc.
  870.     25 Burlington Mall Road
  871.     Burlington, MA 01803
  872.  
  873. Telephone:
  874.  
  875.     Call toll-free 1-800-962-9620 in the USA or 617-674-5000 and
  876.     ask for telemarketing.
  877.  
  878. Internet:
  879.  
  880.     Send email requests to info@odi.com.
  881.  
  882.     You can also download public information from our ftp server,
  883.     ftp.odi.com (198.3.16.17).  Login as "anonymous", and use your
  884.     mail address (username@site) as your password.  Major files of
  885.     interest include:
  886.  
  887.     /pub/docs/techsum-net.ps    Technical Summary (postscript)
  888.     /pub/docs/techsum.net        Technical Summary (FrameMaker)
  889.     /pub/oo7/results.ps        OO7 Benchmark Results (postscript)
  890.  
  891. CompuServe:
  892.  
  893.     GO ODIFORUM, section 1.
  894.  
  895. International distributors contact information follows:
  896.  
  897. GERMANY
  898.  
  899. Patzschke + Rasp 
  900. Software und Systeme
  901. Bierstadter StraBe 7
  902. D-65189 Wiesbaden Germany
  903. 011-49-611-17-310
  904. 011-49-611-17-3131 FAX
  905.  
  906. SPAIN, PORTUGAL
  907.  
  908. DyM
  909. Diseno y Metodologia, SA
  910. Francisco Gervas, 17, 5.0 G
  911. Madrid, Spain 28020011-34-1-571-3123 or 571-3880
  912. 011-34-1-571-3942 FAX
  913.  
  914.  
  915. SWEDEN, NORWAY, DENMARK, FINLAND
  916.  
  917. ENEA Data
  918. Box 4150
  919. S-203 12 Malmo
  920. Sweden
  921. 011-46-40-70930
  922. 011-46-40-230240 FAX
  923.  
  924. SWITZERLAND
  925.  
  926. UNISYS (Schweiz) AG
  927. Zucherstrasse 59-61
  928. A-8800 Thalwill
  929. Switzerland
  930. 011-411-723-3366
  931. 011-411-720-3737 FAX
  932.  
  933. ITALY
  934.  
  935. AIS S.p.a.
  936. Via Rombon, 11-20134
  937. Milano, Italy
  938. 011-39-226-40197
  939. 011-39-2 2641-0744 FAX
  940.  
  941. ISRAEL
  942.  
  943. TACTLINE, Ltd.
  944. Beit-Oved 76800
  945. Israel
  946. 011-972-840-4898
  947. 011-972-840-6927 FAX
  948.  
  949. JAPAN
  950.  
  951. Mitsui Engineering & Shipbuilding Co., Ltd.(MES)
  952. 6-4 ,Tsukiji 5-chome
  953. Chuo-ku,Tokyo, 104 
  954. 011-81-3-3544-3355
  955. 011-81-3-3544-3036FAX
  956.  
  957. Stan Systems Corporation
  958. Sumitomo Higashi Shinbashi Bldg.
  959. 1-1-11 Hamamatsucho
  960. Minato-Ku, Tokyo 105 Japan
  961. 011-81-3-5472-5515
  962. 011-81-3-5472-5544 FAX
  963.  
  964.  
  965. System Network Corporation:
  966. Tohto Bldg. 6F
  967. 5-1-4 Toranomon, Minato-ku, 
  968. Tokyo  105 Japan
  969. Phone#:   +81-3-3437-4081
  970. Fax#:       +81-3-3437-4060
  971.  
  972. Toyo Information Systems Co.,Ltd.
  973. Nihonbashi Toyo Bldg. 4F
  974. 2-7-24 Nihonbashi
  975. Chuo-Ku, Tokyo 103 Japan
  976. 011-81-3-3271-7681
  977. 011-81-3-3271-7685 FAX
  978.  
  979. TAIWAN, R.O.C.
  980.  
  981. Exartech International Corp 
  982. 10F, 82, Chung-Cheng S. RD.
  983. Sanchung, Taipei, Taiwan, ROC
  984. 011-886-2-977-6828
  985. 011-886-2-977-6829 FAX
  986.  
  987. SOUTH AFRICA
  988.  
  989. Realtime Computer Services (Pty) Ltd.
  990. 4th Floor, 35 Wale Street
  991. Cape Town 8001
  992. South Africa
  993. 011 27 21 24 4350
  994. 011 27 21 221507 FAX
  995.  
  996.         
  997. > Ontos [formerly VBase] (Ontologic)
  998.  
  999. Entry on schema evolution only:
  1000.  
  1001. *Ontos provides schema evolution. It allows any class to be modified.
  1002. *The major drawback is that data does not migrate ie., instances are
  1003. *not modified to adopt to the new class definition. So schema changes
  1004. *can be done only on classes that do not contain instances and do not
  1005. *have sub classes that contain instances.
  1006. *[h.subramanian@trl.OZ.AU]
  1007.  
  1008. *As a system for experiments, we are currently using ONTOS from
  1009. *Ontologic Inc.  Unfortunately, there is no transparent concept of
  1010. *schema evolution for populated database. Thus, we still investigate
  1011. *how it works.
  1012.  
  1013. ONTOS has a version of ONTOS for OS/2.  Approximately $11K. Others I don't know
  1014.  
  1015.  
  1016. > Odapter/OpenODB (Hewlett-Packard)
  1017.  
  1018. Odapter is HP's new object/relational adapter which
  1019. enables object-oriented developers to share a common
  1020. object model stored in the ORACLE7 relational database
  1021. management system (RDBMS).  Odapter is also available with
  1022. HP's ALLBASE/SQL RDBMS.  The combination of Odapter
  1023. and ALLBASE/SQL is called OpenODB.
  1024.  
  1025. Odapter 
  1026. Technical Data 
  1027. Object/Relational Adapter 
  1028.   
  1029. A Productivity Tool for Scalable Object-Oriented 
  1030. Applications 
  1031.   
  1032. Odapter is a tool for developers writing scalable 
  1033. object-oriented applications requiring the 
  1034. integration of new objects and legacy information. 
  1035. Odapter is valuable because it: 
  1036. * accelerates application development 
  1037. * reduces the cost of keeping applications current 
  1038. * enables applications to scale 
  1039.   
  1040. Odapter delivers the productivity of object 
  1041. technology while adhering to your data management 
  1042. standards. 
  1043.   
  1044. Consider Odapter if you need to be able to do one 
  1045. or more of the following: 
  1046. * develop object-oriented applications and 
  1047. store objects in a relational database 
  1048. * easily access legacy data and existing 
  1049. applications from your new system 
  1050. * support a large number of end-users who will 
  1051. be simultaneously accessing information 
  1052. * store large amounts of  complex information 
  1053.   
  1054. The following are examples of applications well- 
  1055. suited for Odapter: 
  1056. * a customer billing application written in 
  1057. Smalltalk combining data stored in DB2 with new 
  1058. objects. (Telecommunications) 
  1059. * a network management application written in C 
  1060. using Odapter as the object manager, able to scale 
  1061. to millions of objects (Manufacturing) 
  1062. * a complex Oil and Gas industry standard model 
  1063. automatically generated from an Express analysis 
  1064. and design tool. 
  1065. (Oil & Gas) 
  1066. * a medical application using Odapter to 
  1067. combine heterogeneous components of patient 
  1068. records. (Healthcare) 
  1069.   
  1070. Odapter provides authorized access to sharable 
  1071. objects, including existing data and business 
  1072. processes. By bringing object-oriented capabilities 
  1073. to heterogeneous systems environments, Odapter 
  1074. delivers increased functionality while leveraging 
  1075. the stability of existing RDBMSs and legacy 
  1076. information. 
  1077.   
  1078. Odapter Object Model 
  1079.   
  1080. The Odapter object model is based on three key 
  1081. concepts - objects, types and functions. 
  1082. * Objects are a combination of data and 
  1083. behavior (functions). Figure 2 is an example of an 
  1084. object. 
  1085. * Types are dynamic templates allowing you to 
  1086. group together similar components or objects. 
  1087. * Functions define the attributes, 
  1088. relationships and behavior of objects. Odapter 
  1089. supports four types of user-defined functions: 
  1090.   
  1091. Stored functions define attributes and 
  1092. relationships that are stored in the database. In 
  1093. Figure 2, flightno is a stored function. The 
  1094. functions aircraft and crew are also stored 
  1095. functions with user-defined results. 
  1096.   
  1097. SQL-based functions allow you to access existing 
  1098. relational tables with Odapter's object-oriented 
  1099. model. In Figure 2, citypair is an SQL-based 
  1100. function accessing values from an existing 
  1101. relational table. 
  1102.   
  1103. OSQL-based functions define attributes and 
  1104. relationships that are derived or calculated with 
  1105. OSQL statements. In Figure 2, delay and depart are 
  1106. OSQL-based functions. Delay calculates changes in 
  1107. arrival and departure times based upon events that 
  1108. disrupt the schedule; depart handles the update of 
  1109. functions related to departure and transitions the 
  1110. flight from OnGround to InAir. 
  1111.   
  1112. External functions are a reference to code or data 
  1113. stored outside of Odapter. In Figure 2, cancel is 
  1114. an external function that executes code outside of 
  1115. Odapter to free up resources no longer assigned to 
  1116. the flight. 
  1117.   
  1118. Odapter Language 
  1119.   
  1120. The Odapter language can be combined with functions 
  1121. implemented in C++, Smalltalk or C. You create and 
  1122. manipulate objects, types and functions using 
  1123. Odapter's object-oriented structured query language 
  1124. (OSQL). OSQL is a functional language that is a 
  1125. semantic superset of SQL, the structured query 
  1126. language for relational databases. OSQL is a 
  1127. computationally complete language with statements 
  1128. allowing you to define and manipulate information 
  1129. in your Odapter enhanced relational database, 
  1130. specify authorization for individuals or groups, 
  1131. define transactions, embed program logic within 
  1132. functions, and administer the database. 
  1133.   
  1134. OSQL includes programming flow statements, such as 
  1135. IF/THEN/ELSE, FOR and WHILE. This procedural 
  1136. language allows Odapter functions to model complex 
  1137. behavior, simplifying your application code. By 
  1138. decoupling behavior from the applications, multiple 
  1139. applications can share information with benefits 
  1140. such as consistency, security and integrity. See 
  1141. Table 5 for a list of all OSQL statements. 
  1142.   
  1143. Odapter Object Storage 
  1144.   
  1145. Odapter objects are stored in the developer's 
  1146. choice of relational databases. Odapter interfaces 
  1147. to the underlying RDBMS through an SQL command 
  1148. interface. Currently, developers can choose to 
  1149. store their objects in ORACLE7 or HP ALLBASE/SQL. 
  1150.   
  1151. The choice of RDBMS is made when a particular 
  1152. database is created. The users are only limited by 
  1153. the number of Odapter concurrent user licenses 
  1154. purchased. This flexibility allows database 
  1155. administrators to continue using their existing 
  1156. administration procedures and keeps the group from 
  1157. having to choose yet another database management 
  1158. system. 
  1159.   
  1160. During the initial development of an application, 
  1161. developers can make rapid progress without 
  1162. knowledge of the underlying relational database. 
  1163. Optimization of the objects and how they are stored 
  1164. in the underlying relational database is best 
  1165. done during the deployment phase. 
  1166.   
  1167. Odapter Development Environments 
  1168.   
  1169. Odapter developers have a choice of development 
  1170. environments. Whether Smalltalk, C++ or more 
  1171. traditional C and C-linkable languages are used, 
  1172. Odapter enables object storage in a scalable and 
  1173. robust relational database. In fact, objects can be 
  1174. shared between different applications, allowing 
  1175. different projects to employ the best tools for the 
  1176. job! 
  1177.   
  1178. Odapter and Smalltalk 
  1179.   
  1180. Odapter provides Smalltalk developers with 
  1181. transparent access to information stored in the 
  1182. underlying relational database. 
  1183.   
  1184. Odapter's Smalltalk Class Builder utility 
  1185. automatically generates ParcPlace Smalltalk 
  1186. compatible classes and methods based upon an 
  1187. Odapter object model. The developer can select 
  1188. specific Odapter types and functions, resulting in 
  1189. a corresponding set of Smalltalk classes and 
  1190. methods. Once the Smalltalk schema is generated, 
  1191. the Smalltalk developer can transparently access 
  1192. the underlying relational database, as shown in 
  1193. Figure 3. 
  1194.   
  1195. printFlight 
  1196.    |allFlightObjects| 
  1197.    allFlightObject:=Flight allObjects. 
  1198.    AllFlightObjects do: [:aFlight| 
  1199.       Transcript show :aFlight flightno value; cr]. 
  1200. Figure 3 
  1201.   
  1202.   
  1203. Figure 3 shows how to access the flight objects 
  1204. shown in Figure 2 through Smalltalk. This example 
  1205. retrieves all flight object identifiers and prints 
  1206. the flight# for each one of the flight objects. 
  1207.   
  1208. All Smalltalk classes and methods which result in 
  1209. the access of Odapter structures are italicized. 
  1210. Flight is a Smalltalk class that corresponds to the 
  1211. Odapter type Flight. The Smalltalk methods 
  1212. allObjects and flightno map to Odapter calls that 
  1213. access data from the relational database storage 
  1214. manager. 
  1215.   
  1216. Odapter and C++ 
  1217.   
  1218. For C++ developers, once the corresponding C++ 
  1219. model is created, Odapter provides the abilility to 
  1220. manage C++ objects stored in the underlying 
  1221. relational database, as shown in Figure 4. 
  1222.   
  1223. void printFlight() 
  1224.    int i; 
  1225.    ODBType Flight ("Flight"); 
  1226.    ODBBag allFlights=Flight.allObjects(); 
  1227.    ODBFunc flightno("flighno"); 
  1228.   
  1229.    for(i=0;i<allFlights.size();i++){ 
  1230.       cout<<flightno(allFlights[i]); 
  1231.    } 
  1232. Figure 4 
  1233.   
  1234. Figure 4 shows a C++ version of the Smalltalk 
  1235. example in Figure 3. That is, Figure 4 shows how to 
  1236. access all the flight objects shown in Figure 2 and 
  1237. prints the flight number associated with each 
  1238. flight object. 
  1239.   
  1240. The Odapter C++ library includes a set of classes 
  1241. (e.g. ODBType, ODBClass, ODBFunc, ODBBag) and 
  1242. corresponding member functions (e.g. allObjects). 
  1243. User-defined classes (Flight) and member functions 
  1244. (flightno) are also shown. In Figure 4, all Odapter 
  1245. calls are in italics. 
  1246.   
  1247. Odapter and C-linkable Languages 
  1248.   
  1249. For traditional developers using C, or any 
  1250. languages linkable with C, the object-oriented 
  1251. features are provided by Odapter. Odapter objects 
  1252. are manipulated by embedding OSQL statements in the 
  1253. C program, similar to the db.execosql call shown in 
  1254. Figure 4. In addition, the C interface requires the 
  1255. conversion of data types from Odapter to C. 
  1256.   
  1257. By embedding Odapter calls in a C program, the C 
  1258. language becomes object-oriented. 
  1259.   
  1260. Features and Benefits 
  1261.   
  1262. Accelerates Application Development 
  1263.   
  1264. Odapter accelerates application development by 
  1265. integrating with familiar development environments 
  1266. and by providing a robust object-oriented model. 
  1267.   
  1268. Odapter's choice of development environments 
  1269. includes those which support the Smalltalk, C++ and 
  1270. C languages. 
  1271.   
  1272. Odapter's robust object model enables the 
  1273. integration of legacy data and business processes 
  1274. in the context of one sharable business object 
  1275. model, shielding the developer from the data 
  1276. storage complexity. 
  1277.   
  1278. The following Odapter features accelerate 
  1279. application development: 
  1280.   
  1281. Automatic mapping of objects to relational 
  1282. databases 
  1283. The application developer is shielded from the task 
  1284. of converting complex object models to two 
  1285. dimensional relational tables. 
  1286.   
  1287. Smalltalk Class Builder 
  1288. Once an OSQL schema is created, whether using 
  1289. available analysis and design tools or manually, 
  1290. Odapter's Smalltalk Class Builder can generate 
  1291. corresponding Smalltalk classes and methods. The 
  1292. developer can select the relevent part of the 
  1293. Odapter schema to generate. As the Odapter object 
  1294. model changes, developers can also incrementally 
  1295. update the Smalltalk classes. 
  1296.   
  1297. Object Identity 
  1298. Each object manipulated by Odapter has a unique, 
  1299. system-provided handle called an object identifier 
  1300. (OID). OIDs eliminate the need for creating unique 
  1301. keys to identify stored information. Additionally, 
  1302. OIDs reduce duplication of information when several 
  1303. attributes would be needed to uniquely identify 
  1304. information in the database. OIDs are also a 
  1305. powerful way to tune data access and performance. 
  1306.   
  1307. Inheritance 
  1308. Odapter objects can use functions defined on parent 
  1309. types in the type hierarchy. For example, as shown 
  1310. in Figure 5, a subtype of Employee called Pilot 
  1311. could inherit functions from Employee like hire and 
  1312. name, while defining unique functions like 
  1313. hoursflown and status. 
  1314.   
  1315.   
  1316. Multiple Inheritance 
  1317. Functions defined on a type can be inherited by one 
  1318. or more subtypes. In Figure 5, functions accessible 
  1319. by the type ManagingPilot are inherited from its 
  1320. parents, namely all functions defined on Employee, 
  1321. Pilot and Manager. By inheriting rather than 
  1322. redefining functions, you can easily add 
  1323. functionality to your application. 
  1324.   
  1325. OSQL 
  1326. If you already know SQL, you can quickly be 
  1327. productive using Odapter's OSQL. Both query 
  1328. languages are set-based, that is they retrieve sets 
  1329. of information based upon queries. Thus, OSQL does 
  1330. not require users to navigate through the database 
  1331. chasing pointers or object references. 
  1332.   
  1333. Encapsulation 
  1334. Odapter protects end-user applications from changes 
  1335. to the internal definition of objects. Since 
  1336. Odapter only allows access to data through 
  1337. functions with well defined arguments and results, 
  1338. your applications are protected from changes to the 
  1339. function body and you have control over how 
  1340. information is used. 
  1341.   
  1342. Aggregate Types 
  1343. Aggregates are used to represent collections, such 
  1344. as crew members (maybe several pilots, flight 
  1345. attendants and a mechanic) for a particular flight, 
  1346. or the employees reporting to a particular manager. 
  1347. Aggregates are not required to have a predetermined 
  1348. size. Odapter manages the memory associated with 
  1349. aggregates, relieving your application of this 
  1350. work. 
  1351.   
  1352. User-defined Data Types 
  1353. You can construct user-defined data types in 
  1354. Odapter, such as a type called Flight, Employee or 
  1355. Aircraft, as shown in Figure 6. Functions defined 
  1356. on these types can manipulate data stored within 
  1357. the current object, within other related objects or 
  1358. outside of Odapter. User-defined types maximize 
  1359. flexibility and lead to more manageable, clearer 
  1360. code. 
  1361.   
  1362. Complex Objects 
  1363. With Odapter you can construct complex objects from 
  1364. simpler objects. For example, Figure 6 shows the 
  1365. relationships between the types Flight, Aircraft 
  1366. and Employee.  Complex objects relieve applications 
  1367. from managing such relationships. 
  1368.   
  1369.   
  1370. Reduces the Cost of Keeping Applications Current 
  1371.   
  1372. Odapter supports a server-centric business model 
  1373. which means the business logic and associated data 
  1374. is sharable by multiple applications. By separating 
  1375. out business objects (data and processes), from the 
  1376. application development environment, your company's 
  1377. business can be modified without impacting the 
  1378. applications. These changes can be immediately 
  1379. leveraged by the calling applications without 
  1380. recompilation 
  1381.   
  1382. The following features make applications easier to 
  1383. keep current: 
  1384.   
  1385. External Functions 
  1386. Using external functions, you can access 
  1387. distributed data and code stored outside of the 
  1388. relational database used by Odapter for storage, 
  1389. regardless of location or data format. Examples of 
  1390. external data sources include IMS, DB2 as well as 
  1391. custom databases and flat files. Odapter acts as an 
  1392. integrator so your application can manipulate 
  1393. information as recognizable business objects. This 
  1394. not only allows transparent migration of data over 
  1395. time, it accelerates developer productivity by 
  1396. hiding the complexity of a diverse data storage 
  1397. environment. 
  1398.   
  1399. Overloaded Functions 
  1400. Multiple functions can have the same name with 
  1401. different implementations. An application calls a 
  1402. function (e.g. salary) and Odapter determines at 
  1403. run-time which code (salary for Manager or salary 
  1404. for Pilot) to execute, based upon the type of the 
  1405. object against which the function is invoked. The 
  1406. application is simplified since the conditional 
  1407. logic for determining which function to execute is 
  1408. now in Odapter. 
  1409.   
  1410. Dynamic Schema Modification 
  1411. Odapter object models can be modified while the 
  1412. database is running. Developers can add new 
  1413. functions and types, as well as change the 
  1414. implementation of functions. This capability is 
  1415. particularly valuable to applications with high 
  1416. availability requirements. 
  1417.   
  1418. Dynamic Typing 
  1419. You can change the type of an object without 
  1420. destroying and recreating the object. An object can 
  1421. also belong to more than one type. As shown in 
  1422. Figure 7, once a Flight leaves the ground, it would 
  1423. change state from being an OnGround to an InAir 
  1424. Flight. OnGround functions such as maintenancecrew 
  1425. and availableseats would no longer be needed. An 
  1426. InAir object would need certain functions like 
  1427. bestroute and delay to calculate the most time 
  1428. efficient route and to calculate a projected delay 
  1429. based current weather conditions. Dynamic Typing 
  1430. allows you to represent an object in Odapter which 
  1431. transforms itself over time and, therefore, changes 
  1432. capabilities and attributes. 
  1433.   
  1434. Late Binding 
  1435. Odapter supports functions that are resolved at 
  1436. runtime. Late binding allows you more flexibility 
  1437. in application development and gives you the full 
  1438. power of overloaded functions as described earlier. 
  1439. On the other hand, Odapter will precompile or do 
  1440. early binding to improve performance. However, when 
  1441. types and functions changes at runtime, impacting a 
  1442. particular function, late binding occurs and the 
  1443. application automatically takes advantage of the 
  1444. new implementation of the function when it is 
  1445. called. 
  1446.   
  1447. Referential Integrity 
  1448. Since Odapter manages the relationships between 
  1449. objects, it can manage referential integrity on 
  1450. your behalf. That is, if an object referenced by 
  1451. other objects is deleted, the system removes all 
  1452. dependencies.  Your application code is simplified 
  1453. since Odapter is able to keep the logical business 
  1454. model intact automatically. 
  1455.   
  1456. Multimedia 
  1457. Odapter allows you to manage large, unformatted 
  1458. data in binary format and treat that data as an 
  1459. attribute of an object. For example, you may want 
  1460. to create a function called diagram to show the 
  1461. sections and seating for an Aircraft object. 
  1462. Multimedia information can include graphics, images 
  1463. and voice. You can also define functions in Odapter 
  1464. to manipulate this multimedia information. For 
  1465. example, you can create a function called showexits 
  1466. that adds information to the diagram. Thus, various 
  1467. applications can share these complex functions. 
  1468.   
  1469. Import Facility 
  1470. The Odapter Import facility allows developers to 
  1471. update existing Odapter functions with data from 
  1472. external files such as spreadsheets or other 
  1473. databases. This is an object-oriented version of 
  1474. the relational "bulk load" functionality. 
  1475.   
  1476. Enables Applications to Scale 
  1477.   
  1478. Odapter makes applications more scalable by storing 
  1479. objects in a choice of RDBMSs, like ORACLE7. As a 
  1480. result, applications can access large volumes of 
  1481. data, be used by a large numbers of users, and 
  1482. perform on-line backup. In addition, Odapter 
  1483. protects against unauthorized access from users in 
  1484. a distributed environment. 
  1485.   
  1486. Odapter, with the help of the underlying relational 
  1487. storage manager, ensures the integrity and security 
  1488. of your data while maximizing the availability of 
  1489. that data for end users. 
  1490.   
  1491. The following features enable applications to 
  1492. scale: 
  1493.   
  1494. Indexing 
  1495. Indexes are automatically generated when you create 
  1496. types and functions in Odapter. You can also define 
  1497. your own indexes using B-tree and hashing 
  1498. algorithms. Indexes make end user access to 
  1499. information faster. 
  1500.   
  1501. Clustering 
  1502. Related functions and objects which have the same 
  1503. value for a function can be stored close to each 
  1504. other. This ability to influence how objects are 
  1505. stored allows you to tune the performance of the 
  1506. database based on how the information will be 
  1507. accessed by applications. 
  1508.   
  1509. Transaction Management 
  1510. Odapter ensures the logical and physical integrity 
  1511. of your database by giving you complete control 
  1512. over the unit of work to be performed within a 
  1513. single transaction. With this control, you can save 
  1514. or rollback a transaction (throw away temporary 
  1515. work) at your discretion. Savepoints are also 
  1516. supported so that you can rollback parts of a 
  1517. transaction. 
  1518.   
  1519. Multi-user Concurrency Control 
  1520. Odapter is designed to support hundreds of users 
  1521. accessing the same information while guaranteeing 
  1522. the integrity of that information. 
  1523.   
  1524. Authorization 
  1525. You can control access to an Odapter enhanced 
  1526. database at the database and function levels based 
  1527. on individuals or groups of users. For example, 
  1528. authorization statements can provide read access to 
  1529. a large group of users while limiting write or 
  1530. delete access. 
  1531.   
  1532. High Availability 
  1533. Because Odapter actually stores objects in an 
  1534. RDBMS, Odapter can leverage RDBMS features to 
  1535. maximize the availability of your information by 
  1536. providing: 
  1537. * on-line backup of the database, to backup the 
  1538. database while it is being accessed 
  1539. * dual logging, to ensure the integrity of your 
  1540. log file 
  1541. * switch log, to automatically switch to a 
  1542. second log file if the original log file becomes 
  1543. full 
  1544. * dynamic file expansion, to expand the size of 
  1545. your database as it becomes full 
  1546.   
  1547. Odapter will also take advantage of other available 
  1548. features of the underlying relational database 
  1549. management system such as replication or "warm 
  1550. standby". 
  1551.   
  1552. Recovery 
  1553. Odapter uses the robust logging and recovery 
  1554. facilities of the RDBMS. In case of a failure, you 
  1555. can rollback work or perform rollforward recovery 
  1556. to a particular time, using the log file to 
  1557. recreate saved work. 
  1558.   
  1559. Odapter  Software Components 
  1560.   
  1561. Odapter uses a client/server architecture, enabling 
  1562. you to efficiently utilize your computing power. 
  1563. Clients use the object application call interface 
  1564. (OACI) to communicate with the server over the 
  1565. network. The clients and server components can also 
  1566. reside on the same machine. 
  1567.